/*
 * ISerializable.h
 *
 */

#ifndef ISERIALIZABLE_H_
#define ISERIALIZABLE_H_

#include "serialization/ISerialization.h"


/* Es obligatorio que las clases que implementen ISerializable tengan definidos:
 * + constructor base
 * + constructor copia
 * + operador= */
class ISerializable {
	public:
		virtual ~ISerializable() {}
		virtual BigInt size() const = 0;
		virtual void serialize(ISerializer& serializer) const = 0;
		virtual void unserialize(IUnserializer& serializer) = 0;
};

#endif  /* ISERIALIZABLE_H_ */
